﻿using System.Windows.Media;

namespace System.Xml.Serialization.TestProject
{
    interface IPersonRoot
    {
        string Name { get; set; }
    }

    [XmlRootSerializer("Body")]
    interface IPersonCustomRoot
    {
        string Name { get; set; }
    }

    interface IPersonAttribute
    {
        [XmlAttributeRuntimeSerializer]
        string Name { get; set; }
    }

    interface IPersonCustomAttribute
    {
        [XmlAttributeRuntimeSerializer("Id")]
        string Name { get; set; }
    }

    interface IPersonElement
    {
        [XmlElementRuntimeSerializer]
        string Name { get; set; }
    }

    interface IPersonCustomElement
    {
        [XmlElementRuntimeSerializer("Head")]
        string Name { get; set; }
    }

    interface IPersonCustomElementString
    {
        [XmlElementRuntimeSerializer("Head", typeof(string))]
        string Name { get; set; }
    }

    interface IVeryImportantPersonRoot : IPersonRoot
    {
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonCustomRoot : IPersonCustomRoot
    {
        Guid Id { get; set; }
    }

    [XmlRootSerializer("Spirit")]
    interface IVeryImportantPersonCustomRootOverride : IPersonCustomRoot
    {
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonAttribute : IPersonAttribute
    {
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonCustomAttribute : IPersonCustomAttribute
    {
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonElement : IPersonElement
    {
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonCustomElement : IPersonCustomElement
    {
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonCustomElementOverride : IPersonCustomElement
    {
        [XmlElementRuntimeSerializer("Guid")]
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonCustomElementOverrideGuid : IPersonCustomElement
    {
        [XmlElementRuntimeSerializer("Guid", typeof(Guid))]
        Guid Id { get; set; }
    }

    interface IVeryImportantPersonCustomRuntimeSerializer : IPersonCustomElement
    {
        Guid Id { get; set; }

        [XmlColorRuntimeSerializer]
        Color Color { get; set; }  
    }

    interface IVeryImportantPersonColor
    {
        string Name { get; set; }

        Guid Id { get; set; }

        [XmlColorRuntimeSerializer]
        Color Color { get; set; }
    }
}
